/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */
// 想象成最后一个数往前走k步就行了
// 将整个数组翻转，相当于最后一个数往前走1步
// 然后将前k - 1个数再翻转相当于走了k步
// 最后将后半部分再翻转复位
var rotate = function(nums, k) {
  k = k % nums.length // 取余是位置会不变
  reverse(nums, 0, nums.length - 1)
  reverse(nums, k - 2)
  reverse(k - 1, nums.length - 1)
};
const reverse = (nums, left, right) => {
  while(left < right) {
    let temp = nums[left]
    nums[left] = nums[right]
    nums[right] = temp
  }
}